From: Matthieu Gallien Date: Thu, 13 Mar 2025 10:36:10 +0000 (+0100) Subject: ensure user receiving an encrypted share maintain proper state X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~12^2~1^2~12^2 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success/%22http:/www.example.com/cgi/success?a=commitdiff_plain;h=1c90fb08e0cedb30db97367ae0d2180913e57ea7;p=nextcloud-desktop.git ensure user receiving an encrypted share maintain proper state will make sure the client internal database keeps proper encryption information Signed-off-by: Matthieu Gallien --- diff --git a/src/libsync/encryptfolderjob.cpp b/src/libsync/encryptfolderjob.cpp index e7740a85b..b78eec7da 100644 --- a/src/libsync/encryptfolderjob.cpp +++ b/src/libsync/encryptfolderjob.cpp @@ -72,6 +72,8 @@ void EncryptFolderJob::slotEncryptionFlagSuccess(const QByteArray &fileId) if (!rec.isValid()) { if (_propagator && _item) { qCWarning(lcEncryptFolderJob) << "No valid record found in local DB for fileId" << fileId << "going to create it now..."; + _item->_e2eEncryptionStatus = EncryptionStatusEnums::ItemEncryptionStatus::EncryptedMigratedV2_0; + _item->_e2eCertificateFingerprint = _account->e2e()->certificateSha256Fingerprint(); const auto updateResult = _propagator->updateMetadata(*_item.data()); if (updateResult) { [[maybe_unused]] const auto result = _journal->getFileRecord(currentPath, &rec); @@ -81,7 +83,7 @@ void EncryptFolderJob::slotEncryptionFlagSuccess(const QByteArray &fileId) } } - if (!rec.isE2eEncrypted()) { + if (rec.isValid() && !rec.isE2eEncrypted()) { rec._e2eEncryptionStatus = SyncJournalFileRecord::EncryptionStatus::Encrypted; rec._e2eCertificateFingerprint = _account->e2e()->certificateSha256Fingerprint(); const auto result = _journal->setFileRecord(rec); diff --git a/src/libsync/propagateupload.cpp b/src/libsync/propagateupload.cpp index a38359d94..4946f05e9 100644 --- a/src/libsync/propagateupload.cpp +++ b/src/libsync/propagateupload.cpp @@ -249,6 +249,8 @@ void PropagateUploadFileCommon::setupEncryptedFile(const QString& path, const QS { qCDebug(lcPropagateUpload) << "Starting to upload encrypted file" << path << filename << size; _uploadingEncrypted = true; + _item->_e2eEncryptionStatus = EncryptionStatusEnums::ItemEncryptionStatus::EncryptedMigratedV2_0; + Q_ASSERT(_item->isEncrypted()); _fileToUpload._path = path; _fileToUpload._file = filename; _fileToUpload._size = size; @@ -450,6 +452,8 @@ void PropagateUploadFileCommon::slotFolderUnlocked(const QByteArray &folderId, i void PropagateUploadFileCommon::slotOnErrorStartFolderUnlock(SyncFileItem::Status status, const QString &errorString) { if (_uploadingEncrypted) { + Q_ASSERT(_item->isEncrypted()); + _uploadStatus = { status, errorString }; connect(_uploadEncryptedHelper, &PropagateUploadEncrypted::folderUnlocked, this, &PropagateUploadFileCommon::slotFolderUnlocked); _uploadEncryptedHelper->unlockFolder(); @@ -839,6 +843,8 @@ void PropagateUploadFileCommon::finalize() propagator()->_journal->commit("upload file start"); if (_uploadingEncrypted) { + Q_ASSERT(_item->isEncrypted()); + _uploadStatus = { SyncFileItem::Success, QString() }; connect(_uploadEncryptedHelper, &PropagateUploadEncrypted::folderUnlocked, this, &PropagateUploadFileCommon::slotFolderUnlocked); _uploadEncryptedHelper->unlockFolder();